package ovm.gui.views.administration.users;

import com.vaadin.ui.*;
import ovm.management.administration.users.UsersManager;
import ovm.management.users.UserRules;
import ovm.gui.views.AbstractView;

import static ovm.application.MainApplication.*;

public class AddUserView extends AbstractView {

    private TextField loginText;
    private TextField passwordText;
    private OptionGroup userRuleSelect;
    private Button addUserButton;

    public AddUserView () {
        super();
        setCaption("Добавление пользователя");
        loginText = new TextField("Введите логин пользователя");
        passwordText = new TextField("Введите пароль пользователя");
        userRuleSelect = new OptionGroup("Выберите роль пользователя");
        userRuleSelect.removeAllItems();
        userRuleSelect.addItem(UserRules.STUDENT);
        userRuleSelect.setItemCaption(UserRules.STUDENT, "Студент");
        userRuleSelect.addItem(UserRules.TEACHER);
        userRuleSelect.setItemCaption(UserRules.TEACHER, "Сотрудник");
        userRuleSelect.addItem(UserRules.ADMIN);
        userRuleSelect.setItemCaption(UserRules.ADMIN, "Админ");
        userRuleSelect.select(UserRules.STUDENT);

        addUserButton = new Button("Добавить");
        addUserButton.addListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent event) {
                String login = (String) loginText.getValue();
                String password = (String) passwordText.getValue();
                Integer rule = (Integer) userRuleSelect.getValue();

                int response = UsersManager.addUser(login, password, rule);
                if (response == UsersManager.SUCCESSFUL) {
                    navigator.showNotification("Пользователь успешно добавлен");
                } else if (response == UsersManager.SAME_LOGIN_ERROR) {
                    navigator.showNotification("Пользователь с таким логином уже существует");
                } else {
                    navigator.showNotification("Произошла ошибка");
                }

                //loginText.setValue("");
                //passwordText.setValue("");
            }
        });

        addComponent(loginText);
        addComponent(passwordText);
        addComponent(userRuleSelect);
        addComponent(addUserButton);
    }

}
